// 剩余参数，默认参数，解构赋值
function foo(a, b, ...c) {
    console.log(a, b, c);
}
foo(10, 20, 30, 40)
// 剩余参数包含那些没有形参的实参，只能放在形参的最后面
// 与arguments的区别是，arguments包含所有的参数。

// 默认参数格式：形参=val，还可以用前面的参数赋值
function test(a, b = 10, c = b) {
    console.log(a, b, c);
}
test(10)

// 解构赋值，是浅拷贝
let obj = {
    n: 'zzy',
    age: 100
}
let c = {age, n} = obj
console.log(n, age, c);
c.n = 'ooo'
console.log(c, obj);

let arr = [1, 2, 3]
// let [a1, a2] = arr // 1, 2
let [a1, ...a2] = arr // 1, [2, 3]
console.log(a1, a2);